#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLayout>
#include <QLabel>
#include <QListWidget>
#include <QStringList>
#include <QFileInfo>
#include <QMediaPlayer>
#include <QPushButton>
#include <QHBoxLayout>
#include <QFileDialog>
#include <QDebug>
#include <QAudioOutput>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
public slots:
    void playSelectedMusic(const QModelIndex &index);

    void updatePlayButton(QMediaPlayer::PlaybackState state);

    void handleMediaStatusChanged(QMediaPlayer::MediaStatus status);

    void addMusic();

    void playMusic();

    void pauseMusic();
private:
    void createMusicList();
    void createControlButtons();
    void createMediaPlayer();
    void playMusicAtIndex(int);
private:
    Ui::MainWindow *ui;
    QWidget *centralWidget;
    QVBoxLayout *mainLayout;
    QLabel *listLabel;
    QListWidget *musicList;
    QMediaPlayer *player;
    QAudioOutput *audioOutput; // 新增音频输出成员
    QStringList musicPathList; // 存储音乐文件路径列表，替代播放列表
    int currentMusicIndex; // 当前播放音乐在列表中的索引
    QPushButton *addButton;
    QPushButton *playButton;
    QPushButton *pauseButton;
    QMap<QString, QString> musicPathMap; // 存储音乐文件名与路径的映射
};
#endif // MAINWINDOW_H
